2012-10-13 217 views
-2

我正在設計一個有關超市或百貨公司在全世界有分店的數據庫。在DB中提供實體關係?

我有國家和分支機構的名單。任何人都可以幫助我將它們鏈接到數據庫中。

+0

閱讀關於數據庫和數據模型模式的書籍。去amazon.com –

回答

1

檢查這個link。我想這就是你要問的問題

2

這樣的事情?

enter image description here

當然,你的表將包含更多的列來存儲額外的數據 - 但是這將是基本骨架。

或者你到底在問什麼?你不是在你的問題非常清楚....

T-SQL代碼來生成這個(適應這爲MySQL應該是沒有問題的):

CREATE TABLE dbo.Country 
(
    CountryID int NOT NULL, 
    CountryName varchar(50) NOT NULL 
) 

ALTER TABLE dbo.Country 
ADD CONSTRAINT PK_Country PRIMARY KEY CLUSTERED (CountryID) 
GO 

CREATE TABLE dbo.State 
(
    StateID int NOT NULL, 
    StateName varchar(50) NOT NULL, 
    CountryID int NOT NULL 
) 

ALTER TABLE dbo.State 
ADD CONSTRAINT PK_State PRIMARY KEY CLUSTERED (StateID) 

ALTER TABLE dbo.State 
ADD CONSTRAINT FK_State_Country 
FOREIGN KEY(CountryID) REFERENCES dbo.Country(CountryID) 
GO 

CREATE TABLE dbo.City 
(
    CityID int NOT NULL, 
    CityName varchar(50) NOT NULL, 
    StateID int NOT NULL 
) 

ALTER TABLE dbo.City 
ADD CONSTRAINT PK_City PRIMARY KEY CLUSTERED(CityID) 

ALTER TABLE dbo.City 
ADD CONSTRAINT FK_City_State 
FOREIGN KEY(StateID) REFERENCES dbo.State(StateID) 
GO 
+0

@marc_c給了你一個很好的答案,但我希望在應用它之前,你要確保需要規範化的數據,因爲有些情況下非規範化的模式是有益的。 – Kane

+0

@Kane:總是從**規範化的**數據模型開始 - 這是正確的做法!如果規範化的模型受到傷害(例如表演或其他),我只會非規範化。 –

1

如果我理解正確,你需要三個表(國家,城市和州)與一個ID和超市參考ID在國家,城市和國家的表。

create table country(id int, name varchar); 
create table city(id int, name varchar); 
create table state(id int, name varchar); 
create table supermarket(country int, city int, state int);