网站的数据库设计
⑴ 网站的数据库如何设计
什么是好的数据库设计?
一些原则可为数据库设计过程提供指导。第一个原则是,重复信息(也称为冗余数据)很糟糕,因为重复信息会浪费空间,并会增加出错和不一致的可能性。第二个原则是,信息的正确性和完整性非常重要。如果数据库中包含不正确的信息,任何从数据库中提取信息的报表也将包含不正确的信息。因此,基于这些报表所做的任何决策都将提供错误信息。
所以,良好的数据库设计应该是这样的:
将信息划分到基于主题的表中,以减少冗余数据。
向 Access 提供根据需要联接表中信息时所需的信息。
可帮助支持和确保信息的准确性和完整性。
可满足数据处理和报表需求。
设计过程
设计过程包括以下步骤:
确定数据库的用途:这可帮助进行其他步骤的准备工作。
查找和组织所需的信息:收集可能希望在数据库中记录的各种信息,如产品名称和订单号。
划分到表中的信息:将信息项划分到主要的实体或主题中,如“产品”或“订单”。每个主题即构成一个表。
关闭信息项目导入的列 确定希望在每个表中存储哪些信息。每个项将成为一个字段,并作为列显示在表中。例如,“雇员”表中可能包含“姓氏”和“聘用日期”等字段。
指定为主键:选择每个表的主键。主键是一个用于唯一标识每个行的列。例如,主键可以为“产品 ID”或“订单 ID”。
设置表关系:查看每个表,并确定各个表中的数据如何彼此关联。根据需要,将字段添加到表中或创建新表,以便清楚地表达这些关系。
优化您的设计:分析设计中是否存在错误。创建表并添加几条示例数据记录。确定是否可以从表中获得期望的结果。根据需要对设计进行调整。
应用规范化规则:应用数据规范化规则,以确定表的结构是否正确。根据需要对表进行调整。
参考:数据库设计基础
⑵ 关于电商网站数据库的设计有什么好的建议
这个问题的核心点在于:不同商品类别差异很大,如何设计通用的存储方案?简单来说,用数据库去存储所有信息,不管横表还是纵表,都有明显的缺陷:横表:同一个字段对不同商品含义不一样,这到了后面开发和维护是很蛋疼的纵表:一个商品的属性分布到很多行记录中,业务处理很麻烦,而且纵表的记录数会非常多,性能会有问题所以不要尝试只用数据库去统一解决这个问题,思路扩散一些其实就简单了:公共表:提炼商品公共的信息放到数据库,例如商品id、名称、发布的商家、发布日期、上架状态扩展表:将变化的信息放到另外一个表,可以是数据库表,例如电脑商品一个表、服装一个表;也可以将信息放到MongoDB或者ElasticSearch这类文档数据库。搜索组件:扩展表在全文搜索的时候不好实现,因此需要独立的组件负责搜索,可以用Elastic Search或者Solr来冗余一份数据,用于搜索。表结构不算复杂,因为项目关系只有SPU,没有涉及到SKU,但是可以做参考,更多的还是要根据项目实际情况设计。重点说明一下产品表的SPU,Keyword字段。本来之前设计了关系表,但是发现在做SQL查询时太痛苦,所以约定了一种数据存储结构(数据结构的重要性)基于上面的基础,可以实现URL规则变化的查询,类似京东的产品查询URL变化c=1,3 指分类层次关系ev=3_1+4_18 指SPU查询 按约定规则转换成字符串再进行查询。
⑶ 做个PHP的小型电影网站,如何设计数据库
可以参看discuz数据库表帖子,和帖子附件的设计,我的大概思路是这样的:
首先建立一个数据表"film"用来保存简短文字信息,其中包含:电影发布时有名字,主演,简介,归属栏目,发布电影的URL链接。在创建一个表(考虑到是小型网站,如果中型的话,可以选择10个,像discuz一样)"attachement",用来保存,上传截图,上传视频。这个表用一个外键与film表连接。中间在外键上加索引。
希望我的回答对你有帮助!
⑷ 网站的数据库如何设计
数据库设计师有很多原则的,大学学数据库系统概念这本书,里面最开始提到了一种很抽象的东西,范式!从1NF->2NF->3NF->BCNF等,当时表示根本不理解,随着现在步入工作,对于数据库设计有了更多理解,一些设计的思想就喝范式有着一些原理上的想通。
先来说说外键,上大学的时候,大家学基础课程的时候都会学到外键这个东西,不过外键真的就好用吗?讲道理,在实际应用中,外键的实用性并不如我工作前想的那么多。外键碰到一个问题就是删除的时候,需要删除掉多个地方,那么就涉及到级联删除等。在分布式的时候,数据最怕不一致,外键的强一致性还是挺难用的。解决办法就是我们可以把物理上的外键转换为逻辑上的外键,在我们的代码中体现出来,而不是要在屋里设计层面展示出来。取数据的时候我们可以一个表一个表取,没必要使用外键来做限制。
要判断清楚数据库设计过程中的实体问题,使用关系型数据库的时候,如何更好地拆分出实体,这是很关键的,并且对于单个数据表的设计,要注意避免数据冗余,就是尽量避免在多个表总存储同一个字段,并且意义相同,这样会更容易出现数据不一致的问题,而这个问题往往是致命的。
在设计单个表时,要注意对于索引的使用,建立一个好的索引,索引的用法就太多了,包括联合索引,单一索引等等,好的索引可以有效提升你的数据查询速度。在有些时候还需要借助一些键值数据库,比如redis等,存储一些不重要,并且可以进行恢复的数据,存入redis是因为redis某些排序什么的特型非常优异。
⑸ 购物网站数据库设计
一、概述
网上购物店的数据模型,主要模式有产品:proct ,帐户:Account,定单:Order。和产品相关的表有category ,proct,item, inventory, supplier;和用户相关表有的account ,signon,profile;和定单相关的表有orders,orderstatus,lineitem ,整体关系如下.
二、帐户模型
帐户模型,记录者用户的登录名称,密码。以及个人信息如地址,性名,电话等,还有它在系统中的profile信息。表有Account 主键是userID,它记录用户的基本信息,如email,name等。Signon 表记录者userID和password,Profile表记录者用户的登录系统的系统设置。可以根据用户的类型,显示不同的登录信息。
(1)account表
create table account (
userid varchar(80) not null,
email varchar(80) not null,
name varchar(80) not null,
status char(2) null,
addr1 varchar(80) not null,
addr2 varchar(40) null,
city varchar(80) not null,
state varchar(80) not null,
zip varchar(20) not null,
country varchar(20) not null,
phone varchar(80) not null,
constraint pk_account primary key (userid)
)
说明:primary key是userID,它记录帐户的基本信息。
(2)Signon 表
create table signon (
username varchar(25) not null,
password varchar(25) not null,
constraint pk_signon primary key (username)
)
说明:记录登录名和密码。
(3)Profile表
create table profile (
userid varchar(80) not null,
langpref varchar(80) not null,
favcategory varchar(30),
mylistopt int,
banneropt int,
constraint pk_profile primary key (userid)
)
说明:用户的登录信息,方便个性化定制。
(4)Bannerdata 表
create table bannerdata (
favcategory varchar(80) not null,
bannername varchar(255) null,
constraint pk_bannerdata primary key (favcategory)
)
说明:记录不同的登录信息。
三、产品模型
产品的模型主要有分类,它是产品的大类。表category 就是记录分类名称,描述信息。Proct
记录每个产品的基本信息,包括产品名称,和产品的描述。它是一对多的关系。Supplier 表
记录产品的提供者信息,包括提供者的名称,地址,状态等。Item 记录产品的提供者,产
品ID,价格,状态。Inventory 表记录产品的数量。关系如下:
(1) category表
create table category (
catid char(10) not null,
name varchar(80) null,
descn varchar(255) null,
constraint pk_category primary key (catid)
)
(2)proct表
create table proct (
proctid char(10) not null,
category char(10) not null,
name varchar(80) null,
descn varchar(255) null,
constraint pk_proct primary key (proctid),
constraint fk_proct_1 foreign key (category)
references category (catid)
)
(3) item表
create table item (
itemid char(10) not null,
proctid char(10) not null,
listprice decimal(10,2) null,.unitcost decimal(10,2) null,
supplier int null,
status char(2) null,
attr1 varchar(80) null,
attr2 varchar(80) null,
attr3 varchar(80) null,
attr4 varchar(80) null,
attr5 varchar(80) null,
constraint pk_item primary key (itemid),
constraint fk_item_1 foreign key (proctid)
references proct (proctid),
constraint fk_item_2 foreign key (supplier)
references supplier (suppid)
)
(4) inventory 表
create table inventory (
itemid char(10) not null,
qty int not null
)
(5)supplier表
create table inventory (
suppid int not null
name varchar(80)
status char(2)
attr1 varchar(80)
attr2 varchar(80)
city varchar(80)
state varchar(80)
zip char(6)
phone varchar(80)
constraint pk_supplier primary key (suppid),
)
四、定单模型
定单记录用户的选择产品信息,数量,表主要有Orders,记录用户的地址,帐户信息,总金
额。Orderstatus 记录定单状态。Lineitem 记录定单中的产品数量,单位价格,产品ID。
(1)orders表
create table orders (
orderid int not null,
userid varchar(80) not null,
orderdate date not null,
shipaddr1 varchar(80) not null,
shipaddr2 varchar(80) null,
shipcity varchar(80) not null,
shipstate varchar(80) not null,
shipzip varchar(20) not null,
shipcountry varchar(20) not null,
billaddr1 varchar(80) not null,
billaddr2 varchar(80) null,
billcity varchar(80) not null,
billstate varchar(80) not null,
billzip varchar(20) not null,
billcountry varchar(20) not null,
courier varchar(80) not null,
totalprice number(10,2) not null,
billtoname varchar(80) not null,
shiptoname varchar(80) not null,
creditcard varchar(80) not null,
exprdate char(7) not null,
cardtype varchar(80) not null,
locale varchar(20) not null,
constraint pk_orders primary key (orderid),
constraint fk_orders_1 foreign key (userid)
references account (userid)
)
定单的信息。
(2)Orderstatus表
create table orderstatus (
orderid int not null,
linenum int not null,
timestamp date not null,
status char(2) not null,
constraint pk_orderstatus primary key (orderid, linenum),
constraint fk_orderstatus_1 foreign key (orderid)
references orders (orderid)
)
定单中的产品状态
(3)lineitem表
create table lineitem (
orderid int not null,
linenum int not null,
itemid char(10) not null,
quantity int not null,
unitprice number(10,2) not null,
constraint pk_lineitem primary key (orderid, linenum),
constraint fk_lineitem_1 foreign key (orderid)
references orders (orderid)
)
⑹ 数据库设计的步骤 如何设计数据库
1、常见数据库设计方法是比较简单的。
2、一主多从冗余读库带来的副作用:读写有延时,可能不一致;写仍然是单点,不能保证写高可用。
3、主库冗余存在数据不一致问题。
4、数据读取速度。
5、利用缓存来实现。
⑺ 问卷调查类网站数据库怎么设计
额,楼主,我也曾经想过做这样一个东西,这个跟试卷系统基本一致的,后来没做了,不过数据库设计的思路可以给你参考下。
1、设计调研问卷的基本信息表,包括调研问卷编号,主题,应用单位,调研起始时间等。
2、设计调研题库表,题库表一般包含4种不同表格,一种为判断类型、一种为单选类型、一种为多选类型、一种为问答类型(填空类型可以归纳为此类型)
3、设计调研问卷试题关联表,包含调研问卷编号,试题编号。
4、设计调研问卷答案表,下分为4种不同表格,判断、单选、多选、问答,包括试题编号,回答者编号,答案等信息。