所以我试图设计一个数据库,允许我将一个产品与多个类别连接起来.这部分我想通了.但我无法解决的问题是持有不同类型的产品细节.
例如,产品可能是一本书(在这种情况下,我需要像isbn,作者等那样引用该书的元数据),或者它可能是商业列表(具有不同的元数据).
我应该怎么解决这个问题?
我想知道你是否有一个网站上有十几种不同类型的列表(商店,餐馆,俱乐部,酒店,活动)需要不同的字段,是否有一个好处,创建一个表定义如下所示的列
示例:
shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours
或者更类似于此的抽象方法:
object_id | name        
---------------
1         | Messy Joe's  
2         | Bate's Motel 
type_id | name
---------------
1       | hotel
2       | restaurant
object_id | type_id
---------------
1         | 2
2         | 1
field_id | name           | field_type
---------------
1        | address        | text
2        | opening_hours  | date 
3        | …您喜欢哪种符号,方法和数据库设计,建模,图表工具以及为什么?
哪种符号,标准,方法是最广泛使用和涵盖的不同供应商?
哪个是标准的,哪个不是?
即哪些是坚持和哪些要避免  
和PerformaneDBA的个人问题:
为什么你更喜欢IDEF1X?
坚持使用内置于RDBMS的旧客户端工具中的工具,符号是否更为舒适?  
更新:
我刚刚阅读了您最有用的数据库标准是什么?.
我很惊讶 - 那里有十几个答案,绝对没有名字或参考,只有冗长的描述.
是否所有数据库开发人员都使用定制的术语和约定?       
我更新了标题,包括"名称",不包括"方法".
我要求的是名称(可能是参考)而不是描述.
符号,例如,UML,IDEF1X.巴克,信息工程
好吧,我主要是SQL Server dev,正如@dportas所提到的,我在SSMS和msdn docs,书籍,文章的图表中看到了一些符号.
我设计的数据库有3个主要的表:BOOKS,ARTICLES,NOTES.
每本书或文章都可以有多个笔记,我的原始设计就是这样,这意味着书上的注释和文章上的注释都会出现在"笔记"表中.以下是NOTES表格的列:
note_idnote_typenote_type_idnote_contentNOTE_TYPE可以是"书"或"文章"; NOTE_TYPE_ID是FK的book_id 如果该note_type是"书" 或一篇文章的ID如果note_type是"文章".
现在我开始怀疑这是否是正确的(或最佳标准化的)设计.另一种方法是使用5个表
书籍/文章/笔记/ book_notes/article_notes
通过这种方式,我可以分别保留书籍笔记和文章笔记,列就像
'notes'{note_id,note_content}'book_notes'{book_id,note_id}'article_notes'{articel_id,note_id}
哪一个更正或更好?
我已经看到了一些可能的方法(在一些数据库引擎中,其中一些是同义词):
应该注意PHP支持的所有主要数据库引擎,但是作为参考,如果还注意到其他引擎,它将会更好.
我要求的设计最适合阅读.例如,在WHERE条件中使用flag字段进行SELECT,或者使用GROUP BY进行标记.性能比存储空间重要得多(除非大小对性能有影响).
还有一些细节:
在创建表时,我不知道它是否会稀疏(如果大多数标志都打开或关闭),但我可以稍后更改表,所以如果有什么我可以优化,如果我知道,它应该是指出.
此外,如果每行只有一个标志(或几个),那么与许多(或许多)标志相比,它会产生影响.
顺便说一句,我在以下的某处读过以下内容:
使用boolean可能与使用tinyint做同样的事情,但是它具有在语义上传达你的意图的优点,这是值得的.
好吧,在我的情况下它并不值得,因为每个表都由我的应用程序中的类表示,并且所有内容都在类中明确定义并且记录良好.
我一直在研究NoSQL数据库,并且出现的一个共同主题是关系数据库不适合存储非结构化数据.例如:
不幸的是,关系数据库使用的严格定义的,基于模式的方法......不适合非结构化和半结构化数据 [来源]
我很难理解为什么会这样.例如,如果我想在关系数据库中存储图像或原始文本,我是否可以将其存储为文本类型(例如,在单个列表或键值表中)?
我有4个亚类:Video,Image,Note,和Form.每个包含不同类型的数据.例如,Image该类包含磁盘和图像属性上的图像文件的路径,Form该类包含表单字段值.但是,每个项目之间的共同元素是GPS坐标和标题,因此我有以下抽象基类:
public abstract class Content
{
    public float? Latitude { get; set; }
    public float? Longitude { get; set; }
    public float? Heading { get; set; }
}
但是,我朦胧的地方是如何在数据库中建模.目前,我有一个名为表Events(例如起见,假设一个事件是党的生日)和4个表(Videos,Images,Notes,和Forms).每个表都有一个链接回Events"主键"的外键.
使用LINQ-to-SQL,我为每个表获得5个类.例如Event.Images,如果我只想要一种类型的数据,这很好,但我想要做的是计算'内容'的总数Event并得到GPS坐标.我可以通过使用来轻松计算计数Event.Images.Count() + Event.Videos.Count() + ...,但我不能对GPS坐标做同样的事情.有没有什么方法可以建模数据库,以便我可以为每个项目使用基类,并且当我需要查看其数据时仍然能够获得单独的强类型项目?
我有一个关于数据库的理论问题.为了使它更具体,我想到了一个例子.
假设我有一个商店和产品.我有很多不同的产品.并非每种产品都具有相同的适用性.例如,我可以用千兆字节定义硬盘的大小,但不能在CPU上使用相同的属性,因为它不适用.我想要的是一个数据库,我可以动态地向产品添加属性.我唯一能想到的是以下内容:
一个带有ID,名称和描述的产品表.
一个属性表,包含ID,Product_ID,Property和Value.
通过这种方式,我可能会获得一个巨大的,我认为不那么高效的属性表.这已经困扰了我很长一段时间了.有谁知道我的问题更好的解决方案?
我正在创建一个应用程序,其核心功能随时间跟踪各种数据(血糖水平,胰岛素剂量,食物摄入量等),我正在尝试决定如何最好地在数据库中组织这些信息.
最基本的是这个特定伞中的所有内容都是一个事件,因此我想到了一个包含可能出现的所有属性的字段的事件表.然而,这可能是笨拙的,因为绝大多数领域最终将成为许多领域的空白; 但我不确定这是否真的是一个问题.这种方式的好处是可以更容易地调用和显示所有事件.但由于许多事件只有"时间戳"的共同点,我怀疑它们是否属于同一个表.
我不确定为每种事件都有一个表是有意义的,因为单独使用大多数事件只有一个属性而不是时间戳,并且它们通常必须混合在一起.(许多类型的数据通常但不总是出现在一个组中)
某些类型的事件有持续时间.有些是比较罕见的.一类事件通常是保持不变的比率,除非费率被改变为良好或临时覆盖(这些是我最担心的).有些是简单的二进制标记(我计划使用链接表,但为了简单起见,我需要/更喜欢整个event_id来链接它们.
我的倾向是,最好有一些表与密切相关的信息类型,而不是一张表,包含所有内容和大量空间......但我不太清楚如何继续.
在这样的情况下,我会喜欢一些关于确定最佳方法的策略建议.
编辑:这是我正在处理的数据类型的简要说明,以防它更清楚
events:
-blood glucose 
     timestamp
     value 
     (tagged w/: from pump, manually entered
     [pre-meal, post-meal (breakfast, lunch, dinner) before bed, fasting, hypo, high, hyper  - which will be either manually entered or inferred based on settings or other user entries], before/after exercise etc i imagine would be better off dynamically generated with queries as necessary. though could apply same paradigm to the meals?
-sensor glucose (must be separate bc it is not as reliable …sql ×5
database ×4
bitflags ×1
events ×1
flags ×1
linq-to-sql ×1
mysql ×1
nosql ×1
relational ×1
standards ×1