Seq nr | Name | Goal | Type | Data source▲ | Last update | License | ... |
---|---|---|---|---|---|---|---|
861 | Grantable privileges on the database and its schemas, domains, types, languages, sequences, foreign data wrappers, and foreign servers | Find privileges on the database and its schemas, domains, types, languages, sequences, foreign data wrappers, and foreign servers that the carrier of the privilege can in turn grant to others, i.e., the privileges have been given WITH GRANT OPTION. The number of privileges that can be passed on should be as small as possible. | Problem detection | system catalog base tables only | 2024-01-07 13:43 | MIT License | |
862 | Grantable roles | Find roles that a member can grant to others, i.e., the role has been granted with ADMIN OPTION. The number of privileges that can be passed on should be as small as possible. | Problem detection | system catalog base tables only | 2024-01-07 13:42 | MIT License | |
863 | Granted roles | Find membership relations between roles. | General | system catalog base tables only | 2024-01-07 13:30 | MIT License | |
864 | Gratuitous context in the names of foreign key columns | Find foreign key columns that name contains twice the name of the referenced (primary) table. | Problem detection | system catalog base tables only | 2021-02-25 17:29 | MIT License | |
865 | Gratuitous context in the names of schema objects | Find schema objects that name starts with the schema name and then has at least one more symbol. "Shorter names are generally better than longer ones, so long as they are clear. Add no more context to a name than is necessary" (Robert C. Martin, Clean Code) Shema is a namespace. There cannot be in the same schema two schema objects that belong to the same name class and have the same name. | Problem detection | system catalog base tables only | 2021-02-25 17:30 | MIT License | |
866 | Identical indexes | Find indexes that are identical, i.e., have the same properties, including uniqueness. The query considers all types of indexes, including indexes that have been automatically created to support a constraint and function-based indexes. | Problem detection | system catalog base tables only | 2021-02-25 17:30 | MIT License | |
867 | Inconsistency (code vs. id) of naming foreign key and referenced candidate key columns | Naming of foreign key and referenced candidate key columns should be consistent. It cannot be so that in one table a value is labeled "id" like some surrogate key value and in another it "turns" into human-usable "code" or vice versa. An example: Person(person_id, name) Primary Key (person_id) E_mail_address(e_mail_address_id, person_code, address) Primary Key (e_mail_address_id) Foreign key (person_code) References Person (person_id) | Problem detection | system catalog base tables only | 2021-02-25 17:30 | MIT License | |
868 | Inconsistent chain of relationships in terms of using ON UPDATE CASCADE | In case of a chain of relationships between tables (where the primary key and the foreign key have the same columns) the use of ON UPDATE CASCADE should be consistent - either all the involved foreign keys have ON UPDATE CASCADE compensating action or none of these have it. For instance, in the next example there is inconsistency, because if one changes the person_code in table Person, then the modification does not succeed because it does not cascade to the table Product. It is unclear as to whether it should be possible to change the person_code or not. Person (person_code, surname) Primary key (person_code) Worker(person_code) Primary key (person_code) Foreign key (person_code) References Person (person_code) ON UPDATE CASCADE Product(product_code, registrator) Primary key (product_code) Foreign key (registrator) References Worker (person_code) ON UPDATE NO ACTION | Problem detection | system catalog base tables only | 2021-02-25 17:30 | MIT License | |
869 | Index FILLFACTOR has been changed | Find all indexes where FILLFACTOR is not the default. The default is different in case of different index types is different. In case of B-tree indexes the default is 90. | General | system catalog base tables only | 2022-11-02 10:58 | MIT License | |
870 | Installed extensions | Try to use as much the possibilities of the DBMS as possible. On the other hand, do not install extensions that are not needed in order not to overcomplicate the database. | General | system catalog base tables only | 2020-11-06 14:51 | MIT License | |
871 | More than one index on a column | Find base table columns that belong to more than one index (including automatically created indexes that support constraints). | General | system catalog base tables only | 2021-11-10 14:44 | MIT License | |
872 | Multiple inheritance | Find instances of multiple inheriance of base tables. Make sure that multiple inheritance is indeed needed. | General | system catalog base tables only | 2020-11-15 12:20 | MIT License | |
873 | Multiple tables share the same state classifier | Find cases where multiple tables share the same state classifier. For each main entity type one should create a separate state classifier table. Even if the classifier values are the same in case of two entity types for now these may become different in the future. Having a shared state classifier table usually means very simplistic state machines (states active and inactive) that could point to the gaps in analysis. | Problem detection | system catalog base tables only | 2023-12-30 15:51 | MIT License | |
874 | Multiple triggers that update tsvector values | Find base tables that have multiple triggers to update tsvector values. | Problem detection | system catalog base tables only | 2023-11-07 10:14 | MIT License | |
875 | Names of columns that hold personal names but do not take into account cultural diversity | Find columns of tables (base tables, views, materialized views, foreign tables) that have the name first_name or last_name. Such column names do not take into account that different cultures use different personal name components and the number of possible components is more than two. If in a culture, the surname is presented before the given name, then the column names causes confusion. | Problem detection | system catalog base tables only | 2021-02-25 17:30 | MIT License | |
876 | Names of constraints (directly connected to a base table) and non-unique indexes that do not contain the associated column name | Find constraints that are perhaps badly named. Find names of constraints (directly connected to a base table) and non-unique indexes that do not contain the associated column name. | Problem detection | system catalog base tables only | 2022-10-21 10:41 | MIT License | |
877 | Names of constraints (directly connected to a base table) that do not contain the table name | Find constraints that are perhaps badly named. Table names help us to ensure the uniqueness of the names within a schema and make the names more expressive and user-friendly. | Problem detection | system catalog base tables only | 2023-01-10 18:03 | MIT License | |
878 | Names of indexes that do not contain the table name | Find indexes that do not support a declarative constraint and that are perhaps badly named. Table names make the names more expressive and user-friendly. | Problem detection | system catalog base tables only | 2023-01-10 18:13 | MIT License | |
879 | Not inherited CHECK constraints | Find CHECK constraints that have been defined in a supertable (parent table) but not in its subtables. An entity that belongs to a subtype should also belong to its supertype. If a subtype entity satisfies some constraint, then logically it must also satisfy the constraints of the supertype as well. If CHECK constraints are not inherited, then this is not guaranteed. If you implement subtyping not merely reuse implementation in the subtables, then the subtables must have at least the same CHECK constraints as the supertable. CHECK(false) on a supertable is an appropriate CHECK constraint if one wants to prevent registering data directly to the supertable, i.e., data can only be added to the subtables. | General | system catalog base tables only | 2020-12-27 17:42 | MIT License | |
880 | Not inherited CHECK constraints that are recreated in the immediate subtable | Find base table CHECK constraints that have been defined as NOT INHERITED but the constraint with the same Boolean expression has been defined in the immediate subtable of the table. | Problem detection | system catalog base tables only | 2021-02-25 17:29 | MIT License |