Sql 我的世界时间数据库设计/ORM
我有一个数据库设计,我想得到一些反馈/帮助 我有三个不同的实体:Sql 我的世界时间数据库设计/ORM,sql,orm,foreign-keys,many-to-many,relation,Sql,Orm,Foreign Keys,Many To Many,Relation,我有一个数据库设计,我想得到一些反馈/帮助 我有三个不同的实体:城市,时区,规则 一个城市与1关联,并且只有1个时区(非1:仅1) 时区可能与许多城市(不确定城市的最小数量)相关 一个时区正好有两条规则(DST和ST) 每个规则可能与许多不同的时区关联 我使用ORM Designer设计表格只是为了帮助我可视化: 在本ORM中,有: 父时区和子城市 父时区和子时区之间的一对多关系 父规则和子时区规则 现在回答我的问题: 这个多对多连接表可以工作吗 我如何知道什么规则属于什么时区?我有
城市
,时区
,规则
- 一个
与1关联,并且只有1个城市
(非<1,非>1:仅1)时区
可能与许多时区
(不确定城市的最小数量)相关城市
- 一个时区正好有两条规则(DST和ST)
- 每个
可能与许多不同的规则
时区关联
- 父
和子时区
城市
- 父
和子时区
时区之间的一对多关系
- 父
和子规则
时区规则
- 这个多对多连接表可以工作吗
- 我如何知道什么
属于什么规则
?我有时区
属性来获取TimeZone.RuleName
时区的
,但是如果我想向后走,比如说查找规则适用的所有规则
时区
- 如何使用字符串(
)查找时区的RuleName
,因为规则
有两条规则(名称相同但ID不同/唯一)时区
- 如何使用正确的ID/行填充此连接表
- 我知道
有一个City
,我为它添加了实际值,我可以使用这个TimeZoneId
来查找TimeZoneId
时区
a
所属的,但是我如何才能找到所有City
城市
a
时区
所包含的内容呢
-Francisco我将跳过关于您是否真的需要/应该这样做而不是使用标准库的部分,只讨论时区映射到两个规则的问题
时区
具有规则ID
。它可以有两个RuleId
s:
- DstRuleId
- 甲状腺肿
CREATE TABLE timezones
(
[id] INT NOT NULL PRIMARY KEY,
[name] VARCHAR(30) NOT NULL,
[bias] SMALLINT NOT NULL,
[dst_rule_id] INT,
[st_rule_id] INT,
[tz_abreviation] VARCHAR(7) NOT NULL,
[country_code] CHAR(2) NOT NULL,
[country_name] VARCHAR(42) NOT NULL,
[comments] VARCHAR(100),
[coordinates] VARCHAR(20),
[version] ROWVERSION
);
这将是最简单的。为了获得更大的灵活性,并遵循更密切的关系,可以引入一个RuleType
表,该表只从两个条目开始:
- DST
- 圣
规则
表到规则类型
表的映射,时区表将引用这些映射。如果有很高的可信度,那么使用DstRuleId和StRuleId就更容易了,因为这不会改变
- 查找规则适用的所有时区
从TimeZoneRule中选择timezoneid,其中RuleId=?
- 由于时区有两条规则(名称相同但ID不同/唯一),如何使用字符串(RuleName)查找时区的规则
如果TimeZoneRule中有两列,则为隐式
- 如何使用正确的ID/行填充此连接表
插入时区规则(时区id,规则id)值(?,)
- 我知道城市有一个时区ID,我为其添加了实际值,我可以使用该时区ID查找城市所属的时区,但如何查找时区包含的所有城市
选择时区所在城市的id\u id=?
我之所以不使用标准库,是因为这将是Windows Phone应用程序上的本地数据库,不幸的是,该应用程序不包含这些库。
CREATE TABLE timezones
(
[id] INT NOT NULL PRIMARY KEY,
[name] VARCHAR(30) NOT NULL,
[bias] SMALLINT NOT NULL,
[dst_rule_id] INT,
[st_rule_id] INT,
[tz_abreviation] VARCHAR(7) NOT NULL,
[country_code] CHAR(2) NOT NULL,
[country_name] VARCHAR(42) NOT NULL,
[comments] VARCHAR(100),
[coordinates] VARCHAR(20),
[version] ROWVERSION
);