我必须存储可以按周,每天或每月组织的预定事件(例如说课时).事件可能发生在每个星期一和星期三,或每月的每个星期四.有没有办法将这些信息存储在符合3NF的RDBMS中?
编辑:这不是作业; 我正和朋友一起为我们自己的教化做点什么,我们想要它在3NF.
具体来说,我正试图在RC教区存储大规模和告白时间的时间表.这些可以在很多方面安排,例如每个星期天的x时间或每个星期二/星期四的不同时间.有时它只是本月的第三个星期五,而其他只在一年一次的某个时间提供.我不仅要存储这些信息,还要查询它,以便我可以快速获得第二天或一周或其他任何时间的可用时间的完整列表.
我认为严格来说3NF并不是一个要求,但是对我们来说它会更容易,而且最好是让它更正确,而不是以后更改我们的架构.
我有一个PostgreSQL数据库,它有一个表,主键应用于三列.根据数据库,密钥上有一个索引:
Indexes:
"full_log_pkey" PRIMARY KEY, btree (server_name, line_number, log_generation)
Run Code Online (Sandbox Code Playgroud)
然而一些简单的测试表明我有重复的键:
select count(*) from full_log;
count
----------
60644405
select count(*) from
(select distinct server_name,
line_number,
log_generation
from full_log) as foo;
count
----------
60636564
Run Code Online (Sandbox Code Playgroud)
显然,与行相比,不同的行(基于主键)更少.我的问题是,这怎么可能?
编辑:完整的表定义是这样的:
Table "public.full_log"
Column | Type | Modifiers
----------------+-----------------------------+-----------
activity | character(1) |
archivaldate | timestamp without time zone |
media_type | character varying(5) |
vsn | text |
archive_set | character varying(20) |
copy | smallint |
file_start | integer |
file_offset | integer |
fs_name …Run Code Online (Sandbox Code Playgroud)