如何存储数据并即兴创作这些表格?

时间:2013-10-19 20:10:40

标签: php sql database normalization

这些是我的桌子,第一个'壁纸'表格将存储网站上所有壁纸的独特细节,第二个是'wallpaper_categories',如果它被分类为壁纸或只是一个我将存储拍摄的照片被标记为摄影,第三张照片将包含其可用的尺寸。最后两张桌子将用于分类数据,就像我将整理所有壁纸或所有标记的一样作为摄影或所有桌面壁纸等我的问题是,是一种可靠的创建表的方法我不确定,因为第二和第三个表上有重复的数据,如果没有,那么这是如何即兴的。最后一个请求是如何在sql数据库中实现这样我应该存储什么值来替换复选标记* ..我有点新的,请帮忙。提前致谢! Tables

1 个答案:

答案 0 :(得分:2)

关于数据类型,这取决于数据库。有些提供BIT数据类型,在其他情况下,您可能需要使用CHAR(1)或numeric数据类型。考虑添加CHECK约束以将列限制为两个值并添加NOT NULL约束。

关于结构:如果您支持的集合类别和大小将来可能会发生变化,您可能希望将这些事实表示为关系:

create table wallpapers (
    wallpaper_id int, 
    wallpaper_name varchar, 
    ... , 
    primary key(wallpaper_id)
);

/* All categories your system handles */
create table categories (
    category_id int, 
    category_name varchar, 
    primary key(category_id)
);

/* Categories per wallpaper */
create table wallpaper_categories (
    wallpaper_id int, 
    category_id int, 
    primary key (wallpaper_id, category_id), 
    foreign key (wallpaper_id) references wallpapers (wallpaper_id),
    foreign key (category_id) references categories (categories_id)
); 

同样适用于尺寸。

这样,每次有新的类别或大小时,您都不必更改数据库设计。