Database Design Guidelines
2017-09-30 15:35
399 查看
Database Design Guidelines
Principles
Support popular databasesName Style
Table NameStyle: Pascal
Example: Employee
It is fine that you may use the singular style or plural style. But singular style is preferred here.
Column Name
Style: Pascal
Example: HouseAddress
Avoid to repeat table name in the column name, for example, For table 'Employee', use 'Name' for the column of employee name.
Primary Key Name
Style: Pascal, PK_${TableName}
Example: PK_Employee
Index Name
Style: Pascal, UK_\({Column1Name}_\){Column2Name} for unique indexes.
Use IK_\({Column1Name}_\){Column2Name} for non-unique indexes.
Example: UK_Code
Foreign Key Name
Style: Pascal, FK_\({Column1Name}_\){Column2Name}
Example: FK_DepartmentId
Columns
Text columns
Do use unicode data type to define text columns.Do use nvarchar for variable length text columns.
Date/Date Time
If the value of a date column is expected to present same text result among different time zone, use numeric or text data type to define date/date-time columns.If we define a column with date data type, default, most program language will use date-time type to store values from the column, we should realize the date value will be changed when the data is transited to a different time-zone. For example:
2001/01/15, On the database server, timezone is +8.
2001/01/15, On the application server, timezone is +8.
2001/01/15 01:00:00, On the client, timezone is +9.
So if it is a problem to you, try to use a integer or text data type to store the value.
Tips: consider the case carefully. ask these questions:
If your application will be used in different time-zone?
If you only use date part for the column?
If you only use time part for the column?
Nullable
Avoid to define a column as nullable.Avoid to use null would reduce programing bugs, and bring better performance.
Do Not use null for numeric columns if it has same meaning as zero.
Do Not use null for text columns if it has same meaning as empty.
May use null in a reference column provide that null is acceptable.
Keys
Primary Keys
Do create a primary key for any tables.Recommend to use one column for the primary key.
Use '${TableName}Id' for the name of the primary key column, the column is denoted as 'Id' columns.
Recommend to use integer data type for the primary key column.
Avoid change the value of the primary key column after created.
It is acceptable to show the the value of the primary key column to customers if need.
Foreign Keys
Do create a foreign key if there is a relation between 2 tables.It is useful to keep data integrity.
Carefully use delete cascade clause when creating the foreign keys relationship.
Tips: Be careful, Use delete cascade is also dangerous. consider it twice before use it.
Database-specific constraints
Avoid to use reversed words for name of objects of databasesTips: please read the reversed words from database you will use
Avoid to use system prefix in your object names
Check length limitation of object names of databases
Tables
Entity Tables
Like departments, employee etc, we store these kind of information into entity tables.In most case, the table like:
Definition sample
Employee {EmployeeId, Code, Name, DepartmentId, ...}.
If in your system, an employee only exists in one department, you may use above definition.
Tree Tables
Like most organization, departments will be constructed as a tree, there are some top level departments (or is a root department), except these top level departments, departments must have one and only have one parent department.We define this kind of table as:
Definition sample
Department{DepartmentId, Code, Name, **ParentId**, ...}.
In most case, for the usage convenience, we will define a tree table for each tree relationship, denoted as a tree table.
Definition sample
DepartmentTree{ParentId, ChildId}.
For a parent department, The table stores itself and all its descendants.
From a view of a child department, the table stores itself and all its ancestors.
Hierarchical Tables
Different as tree tables, in the hierarchical tables, a child would have 0 to n parents.For example, groups and users:
Rules
an user would exists in multiple groups.
an groups would exists in multiple groups.
Definition sample
User(userId, Name, isGroup) GroupUser(parentId, userId) GroupUserTree(parentId, userId)
The table GroupUser stores the direct relationships.
Instead, the table GroupUserTRee stores the redundant relationships like tree tables above.
相关文章推荐
- Pro SQL Server 2008 Relational Database Design and Implementation
- Framework Design Guidelines---Naming Guidelines(C# 命名规则)
- [code-design]TvServer 之 database
- ADODB使用excel的"Cannot modify the design of table 'xxxx'. It is in a read-only database"的问题
- Five Simple Database Design Errors You Should Avoid
- Database design basics
- Digital System Design Guidelines
- Guidelines for the Design of Small Sewage Treatment Plants
- 数据库设计(二)Introduction to Database Design
- Semistructured Database Design
- Icon Design Guidelines
- Database Design with PowerDesigner
- 多语言版本网站 数据库设计 What are best practices for multi-language database design?
- Effective Oracle Database 10g Security by Design
- Database Management Systems (Database Design and Tuning)
- [原创] 自动化测试框架设计参考准则 - Guidelines for Automation framework design
- [MSDN]Design Guidelines for Developing Class Libraries with .NET Framework 4
- LINQ Framework Design Guidelines
- Beginning Database Design: From Novice to Professional
- 数据库调优:The most important factor in making a database application fast is its basic design.