回答

收藏

您最有用的数据库标准是什么?

技术问答 技术问答 60 人阅读 | 0 人回复 | 2023-09-13

已锁定    。这个问题及其答案被锁定,因为它是一个问题,但具有历史意义。它目前不接受新的答案或互动。
1 G. w! i6 S. q+ [4 ]" @我有一些想法。随着时间的推移,我积累了一些想法,但我真的很想知道是什么让你在建模数据库时顺利地做事:! ~" Z$ ^( ^6 [5 ^: m( g" J7 H
[ol]与主键名称和描述键匹配
2 W' e- W7 ^0 O/ D# o& C& G) R模式按功能区划分
$ @4 m, ^" E/ R1 o. q6 w尽量避免使用复合主键(使用唯一约束)
: j' ~: ?5 I8 C* n  _- K5 N5 _' R, L骆驼案例名称和字段名称
, p9 n, _0 G$ B9 _& j6 c9 @: c不要在表前添加tbl_不要在前缀proc时加上SP_(无匈牙利符号)
# p$ V. @: S2 j* a; IOLTP至少数据库应该是BCNF / 4NF[/ol]                                                                / d* q; p, X# U* R  [' P8 Y
    解决方案:                                                                . z. L; L' [! X
                                                                将每个人的意见汇总到一个列表中。
- m5 N: m5 U. A5 K命名标准        # a8 w0 P( c0 m1 p& v! i
该模式命名为  
- R) d0 W" ]/ }* H# M没有匈牙利符号:对象名称中没有类型名称(没有匈牙利符号)strFirstName)  
. h% O- I$ [# U注册关键注册关键字作为对象名称) f! _, L6 D. p+ J

1 B, i3 n5 `  e5 _/ x& l, {自然命名对象(以自然方式命名)FirstName代替NameFirst)  
' W! d& x* Z3 A表名应与主要名称和描述字段相匹配(SalesType ― SalesTypeId,SalesTypeDescription)  / C  A9 Q) `( a- J! _1 K5 \2 f
不要以tbl_或sp_  作为前缀7 n3 i; S+ e3 B3 F
根据对象名称的名称代码(CustomerSearch,CustomerGetBalance)  
$ U& |* ~1 C3 v8 B8 V. [6 rCamelCase  数据库对象名称
- T3 q& C* ?3 [6 w单数  列出4 V  s: u  l5 e4 O) y# x# M: I( q8 R
表名可以是复数  
9 F* U5 X( }2 ^, a  m- h提供所有限制的公司名称(MustEnterFirstName)  0 Y/ y7 M' S! `
资料类型        
- Z) T, a5 `" @) W8 A. q- f* {( M9 ?在表之间使用相同的变量类型(在表中使用邮政编码)-在另一个表中使用数字varchar    不是好主意)
4 c1 b; P, a, f( n4 S使用nNVarChar获取客户信息(名称、地址)等。你永远不知道跨国公司什么时候会  4 `* R* V5 E  V+ F/ f
在代码中        3 ]- b+ N% e/ I0 M8 F: D7 ^
关键词总是大写  : e. f+ c1 B, I+ w. }: P
从不使用隐式连接(逗号语法)-始终使用显式INNER JOIN / OUTER JOIN  
6 F9 M- E- T: x$ J# A每行一个JOIN  # l3 H* |( S0 K9 I4 y4 `; D+ y
每行一个WHERE子句  ( S% a! ?7 r+ @5 \* c  T5 n( E
没有循环-替换基于集合的逻辑   
" l4 w; Y/ A  i( j5 [对别名采用简短的表名形式,而不是A,B,C  
- R4 }  q. z6 p* W7 D3 X避免触发   ,除非没有追索权
/ e: }; x3 N  ^; ~避免瘟疫等游标(请阅读http://www.sqlservercentral.com/articles/T-SQL/66097/)  
( u4 w  M" F5 t7 \
文献资料        - L# E! Z, m: P4 w
创建数据库图
6 D3 O1 t- M" {, {& }( R( W创建数据字典  5 Q$ J& Y- I8 |5 d6 t
标准化和参考完整性        
. n, w) d$ H" r" s尽量使用单列主键。必要时使用唯一的约束。
4 [/ G. F. ]8 f参考完整性将始终得到执行  2 K$ f' [0 |% k, n4 I2 g
避免ON DELETE CASCADE  
7 ]& g' N" L/ f8 [  DOLTP必须至少为4NF  
4 `, S( }9 @& M! N+ v4 H2 ?将每一对多关系评估为潜在的多对多关系  
2 D8 U, ~4 y) `7 g, x. O" x, d  T# J非用户生成的主键  ; {+ a- j3 F" u( ?$ U
构建基于插入的模型,而不是基于更新的模型  1 @8 m3 D0 u( u! o
PK到FK名字必须相同(Employee.EmployeeId与EmployeeSalary.EmployeeId相同字段)  
2 p& S- U2 |& o& N除非有双重联系(Person.PersonId联接到PersonRelation.PersonId_Parent和PersonRelation.PersonId_Child)  
0 u* i  |) s" @" d- B9 s; G8 s
维护:运行定期脚本以查找        / a4 L' E8 a7 z
不含表的架构  # E$ h4 T" e5 }' N
孤记录  " _, Y- q3 |$ T, f! v* W
表  没有主键/ o& P, P6 c  P
表  没有索引
3 o# s2 o# H: q; T非确定性UDF  
9 G. t9 F; p4 o备份、备份、备份  
& ?( f* c) I: H; D
做个好人        
1 K# p% N0 f: u. t5 G* @- n8 ]始终如一  3 _3 I6 Q( {: N
修正错误,现在        + i5 V' T. d6 x6 @0 P8 K2 z9 A, i; k
阅读Joe Celko的SQL编程样式(ISBN 978-0120887972)  $ @# H3 F: e. U. i9 T& D0 b9 D
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则