0
我没有在这里找到任何接近我正在寻找的文章。我读了几个主题,但其中没有一个关于数据库和规范化太多。我从动态网站的PHP和MySql书中了解了规范化。创建一个mysql数据库并使用规范化
我举了一个例子,因为我没有教授来纠正我,所以我需要你的帮助来告诉我我是对还是错。
我的例子是用于与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`)
) ;
这是一个非常好的建议。谢谢。 – dragon
不客气! –