我在这里没有找到任何与我要查找的内容相近的文章。我读了一些主题,但没有一个主题过多地介绍了数据库和规范化。我从《PHP and MySql for Dynamic Web Sites》一书中了解了规范化。
我举了一个例子,因为我没有教授来纠正我,所以我需要你的帮助来告诉我我是对还是错。
我的示例是一个有 4 个表的笑话数据库: 用户 页数 类别(笑话、短片等) 子类别(金发女郎、警察、下等人、猎人等)
这是我应用所有三种标准化形式后的结果:
CREATE TABLE `categories` (
`category_id` SMALLINT NOT NULL AUTO_INCREMENT,
`category` VARCHAR(30) NOT NULL,
PRIMARY KEY (`category_id`),
UNIQUE KEY `category` (`category`)
) ;
CREATE TABLE `subcategories` (
`subcategory_id` SMALLINT NOT NULL AUTO_INCREMENT,
`category_id` SMALLINT NOT NULL,
`subcategory` VARCHAR(30) NOT NULL,
PRIMARY KEY (`subcategory_id`),
UNIQUE KEY `subcategory` (`subcategory`)
) ;
CREATE TABLE `pages` (
`id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
`category_id` SMALLINT UNSIGNED NOT NULL,
`subcategory_id` SMALLINT UNSIGNED NOT NULL,
`user_id` SMALLINT UNSIGNED NOT NULL,
`title` VARCHAR(100) NOT NULL,
`content_page` LONGTEXT NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
KEY `creation_date` (`date_created`)
);
CREATE TABLE `users` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`type` ENUM('member','admin', 'superadmin') NOT NULL,
`username` VARCHAR(30) NOT NULL,
`email` VARCHAR(80) NOT NULL,
`pass` VARBINARY(32) NOT NULL,
`first_name` VARCHAR(20) NOT NULL,
`last_name` VARCHAR(40) NOT NULL,
`date_expires` DATE NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`date_modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`user_id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ;
最佳答案
看起来不错,但也许你可以做得更好。
- 在 users 表中,而不是
键入
ENUM('member','admin', ' super 管理员') NOT NULL,
添加一个名为 UserType 的新表
- TypeId(主键)
- 类型名称
并优化您的用户表 添加
- 类型 ID
- ManagerID(通过此属性,您可以了解谁是该用户的管理员或 super 管理员)
最后一步 如果您有很多子类别,请将表格分开。如果这样做,您可以向子类别添加不同的属性(也许是短片时间)。
Adding new tables is not a waste as long as it makes design more clear. But if it is enough, adding more tables makes no sense.
关于mysql - 创建mysql数据库并使用规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876913/