【发布时间】:2017-09-18 15:27:17
【问题描述】:
在一个数据库中,我有以下表格:
create table dbo.Stores (
Id int not null
Name nvarchar (120) not null
)
create table dbo.Users (
Id int not null
Name nvarchar (120) not null
)
每个用户或商店可以拥有: 1 - 一个物理地址; 2 - 一个网站或社交媒体地址。
我应该有地址和社交媒体表格吗?例如:
create table dbo.Addresses (
Id int not null
Street nvarchar (120) not null,
PostalCode nvarchar (12) not null
City nvarchar (40) not null,
Latitude float null,
Longitude float null
)
create table dbo.UserAddresses (
UserId int not null,
AddressId int not null
)
社交媒体、电话号码等也是如此......
我应该只将列添加到用户表吗?
更新 1
对于网站地址和社交媒体地址,我正在考虑使用以下内容:
create table dbo.UserWebAddresses (
UserId int not null,
WebAddressTypeId int not null,
Value nvarchar(200) not null
)
create table dbo.WebAddressTypes (
Id int not null,
Name nvarchar(20) not null
)
这有意义吗?
【问题讨论】:
-
我要指出的是,人们和公司通常有多个地址和不止一个社交媒体帐户。浮点数对于存储纬度(和经度)也很糟糕,因为它是一个不精确的数字,而纬度和经度是精确的。如果需要,您永远不会希望对这些数字进行四舍五入。此外,您的地址表中至少需要国家和可能的州。您可能有来自其他国家/地区的用户与您的国家接壤或兼职。
-
@HLHEM 关于纬度和经度我正在考虑使用十进制 (9,6)。你怎么看?
-
@HLGEM 关于社交媒体我可以有多种类型的联系人... Facebook、Twitter 等...我正在考虑拥有两个表:WebAddress 和 WebAddressType 所以一个用户可以有很多 WebAddresses 之一每种类型。有意义吗?
标签: sql sql-server database-design