當前位置:首頁 » 操作系統 » 網站的資料庫設計

網站的資料庫設計

發布時間: 2023-01-10 03:17:07

⑴ 網站的資料庫如何設計


什麼是好的資料庫設計?

一些原則可為資料庫設計過程提供指導。第一個原則是,重復信息(也稱為冗餘數據)很糟糕,因為重復信息會浪費空間,並會增加出錯和不一致的可能性。第二個原則是,信息的正確性和完整性非常重要。如果資料庫中包含不正確的信息,任何從資料庫中提取信息的報表也將包含不正確的信息。因此,基於這些報表所做的任何決策都將提供錯誤信息。

所以,良好的資料庫設計應該是這樣的:

  • 將信息劃分到基於主題的表中,以減少冗餘數據。

  • 向 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種不同表格,判斷、單選、多選、問答,包括試題編號,回答者編號,答案等信息。

熱點內容
怎麼查看泰拉伺服器ip 發布:2025-05-14 23:03:29 瀏覽:72
c語言學生成績查詢系統 發布:2025-05-14 22:58:30 瀏覽:4
怎麼進別人的伺服器 發布:2025-05-14 22:45:55 瀏覽:772
用編程寫音樂 發布:2025-05-14 22:45:08 瀏覽:782
如何識別電腦的網路配置 發布:2025-05-14 22:38:46 瀏覽:847
pipforpython3 發布:2025-05-14 22:38:34 瀏覽:350
如何把迷你世界的伺服器搞崩 發布:2025-05-14 22:37:15 瀏覽:94
如何讓安卓卡死機 發布:2025-05-14 22:36:27 瀏覽:634
wemall微商城源碼 發布:2025-05-14 22:15:20 瀏覽:804
隆地優選交易密碼是什麼 發布:2025-05-14 21:53:23 瀏覽:97