• Database Design Guidelines


    Database Design Guidelines

    Principles

    • Support popular databases

    Name Style

    • Table Name
      Style: 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 databases

    Tips: 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.

  • 相关阅读:
    NOKIA自己掌控的新的智能手机系统ASHA
    NOKIA自己掌控的新的智能手机系统ASHA
    双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
    双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
    如何用ghost安装双系统(WinXP+Win7)
    摄影还能这么玩!Jamie Beck创意GIF摄影
    线程知识结构概览
    window多线程操作文件
    多线程内存的表现形式
    进程的调度的理解
  • 原文地址:https://www.cnblogs.com/steven-yang/p/7615192.html
Copyright © 2020-2023  润新知