我正在构建一个表示“注释”的数据库表,该表在其中两个列中具有父子关系,如下所示:
ID INT(10) PK NOT NULL UNSIGNED ZEROFILL AUTOINCREMENT -- Primary key
parent_ID INT(10) UNSIGNED ZEROFILL -- References Primary key
username VARCHAR(30) NOT NULL
information VARCHAR(256) NOT NULL
comment VARCHAR(256) NOT NULL
whereusername
是user
表的外键,是写笔记的人的用户名,是笔记中information
包含的信息,comment
是username
添加的内容。comment
总会有东西在里面,不一定和以前的用户一样。
这个概念是有人可以“复制”一个便笺并拥有自己的评论,并说“我从 xxx 那里得到了这个便笺”,从而形成了父子关系。可能有点像在 Facebook 上分享。
如何正确形成 parent_ID 列?我应该使用识别关系吗?哪些方面是强制性的?我认为这必须是一对多的关系,因为五个人可以复制同一个笔记。
我希望复制比创建新笔记更多,因此NULL
记录中的 ' 数量会相对较少,但是要完全摆脱空值,我应该应用约束并简单地使用基本上无意义的记录NOT NULL
来创建默认父级0
在ID 0
软件中并注意这一点?
这甚至是正确的方法吗?我是否应该采用两表系统:
ID INT(10) PK
information VARCHAR(256)
orig_user VARHCAR(30) FK -- Potentially
和
ID INT(10) PK FK
username VARCHAR(30) PK FK
comment VARCHAR(256)
哪个按定义消除了任何可能NULL
的 's ?
谢谢