我有以下两个用于基本讨论论坛的 mysql 表。第一个表包含主题,第二个表包含对特定主题的回复。我想了解这个数据库设计中的外键概念。我需要在这里添加外键吗?它将如何有用以及如何添加到下表中。谢谢。
--
-- Table structure for table `topics`
--
CREATE TABLE IF NOT EXISTS `topics` (
`topic_id` int(11) NOT NULL AUTO_INCREMENT,
`topic_title` varchar(255) NOT NULL,
`topic_content` text NOT NULL,
`topic_author_id` int(11) NOT NULL,
`topic_date` int(10) NOT NULL,
PRIMARY KEY (`topic_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Table structure for table `replies`
--
CREATE TABLE IF NOT EXISTS `replies` (
`reply_id` int(11) NOT NULL AUTO_INCREMENT,
`reply_topic_id` int(11) NOT NULL,
`reply_content` text NOT NULL,
`reply_author_id` int(11) NOT NULL,
`reply_date` int(10) NOT NULL,
PRIMARY KEY (`reply_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)
从技术上讲,外键不是必需的 - 但从数据质量的角度来看,强烈建议使用外键。
外键在两个表之间建立关系 - 它定义并确保:
您没有任何子行(在 中replies)引用topics不存在的父行(在 中)(“僵尸数据”)
它确保只要周围仍有子行,您就不会意外删除父行
一般来说,它可以确保数据的质量和完整性- 这是数据库中强烈推荐的属性!
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |