【问题标题】:Providing Entity-Relationship in DB? [closed]在数据库中提供实体关系? [关闭]
【发布时间】:2012-10-13 19:15:32
【问题描述】:

我正在设计一个关于在世界各地都有分店的超市或百货公司的数据库。

我有国家和分支机构的列表。谁能帮我把它们链接到数据库中。

【问题讨论】:

  • 阅读一本关于数据库和数据模型模式的书。继续访问 amazon.com

标签: mysql sql database database-design


【解决方案1】:

这样的?

当然,您的表将包含更多列来存储额外数据 - 但这将是基本框架。

或者你到底在问什么?你的问题不是很清楚......

生成这个的 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

【讨论】:

  • @marc_c 给了你一个很好的答案,但我希望在应用它之前你确保需要规范化数据,因为在某些情况下非规范化模式是有益的。
  • @Kane:总是从 规范化 数据模型开始 - 这是正确的做法!如果规范化模型受到伤害(例如性能或其他东西),我只会去规范化
【解决方案2】:

如果我理解正确,您需要三个带有 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);

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2010-12-24
    • 2014-11-30
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多