相关疑难解决方法(0)

设计数据库以保存不同的元数据信息

所以我试图设计一个数据库,允许我将一个产品与多个类别连接起来.这部分我想通了.但我无法解决的问题是持有不同类型的产品细节.

例如,产品可能是一本书(在这种情况下,我需要像isbn,作者等那样引用该书的元数据),或者它可能是商业列表(具有不同的元数据).

我应该怎么解决这个问题?

database database-design relational-database

28
推荐指数
3
解决办法
2万
查看次数

具有多列的单个固定表与灵活的抽象表

我想知道你是否有一个网站上有十几种不同类型的列表(商店,餐馆,俱乐部,酒店,活动)需要不同的字段,是否有一个好处,创建一个表定义如下所示的列
示例:

shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours
Run Code Online (Sandbox Code Playgroud)

或者更类似于此的抽象方法:

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        | …
Run Code Online (Sandbox Code Playgroud)

mysql sql database database-design data-modeling

27
推荐指数
2
解决办法
1万
查看次数

您喜欢名称数据库设计符号,为什么?

您喜欢哪种符号,方法和数据库设计,建模,图表工具以及为什么?
哪种符号,标准,方法是最广泛使用和涵盖的不同供应商?
哪个是标准的,哪个不是?
即哪些是坚持和哪些要避免

和PerformaneDBA的个人问题:
为什么你更喜欢IDEF1X?
坚持使用内置于RDBMS的旧客户端工具中的工具,符号是否更为舒适?

更新:
我刚刚阅读了您最有用的数据库标准是什么?.
我很惊讶 - 那里有十几个答案,绝对没有名字或参考,只有冗长的描述.
是否所有数据库开发人员都使用定制的术语和约定?

我更新了标题,包括"名称",不包括"方法".
我要求的是名称(可能是参考)而不是描述.
符号,例如,UML,IDEF1X.巴克,信息工程

好吧,我主要是SQL Server dev,正如@dportas所提到的,我在SSMS和msdn docs,书籍,文章的图表中看到了一些符号.

sql database language-agnostic standards database-design

11
推荐指数
2
解决办法
4579
查看次数

数据库设计使用子类型与否?

我设计的数据库有3个主要的表:BOOKS,ARTICLES,NOTES.
每本书或文章都可以有多个笔记,我的原始设计就是这样,这意味着书上的注释和文章上的注释都会出现在"笔记"表中.以下是NOTES表格的列:

  • note_id
  • note_type
  • note_type_id
  • note_content

NOTE_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}

哪一个更正或更好?

sql database-design data-modeling

7
推荐指数
1
解决办法
1976
查看次数

在每个数据库引擎中存储二进制标志/布尔值的最佳方法是什么?

我已经看到了一些可能的方法(在一些数据库引擎中,其中一些是同义词):

  1. TINYINT(1)
  2. BOOL
  3. BIT(1)
  4. ENUM(0,1)
  5. CHAR(0)NULL

应该注意PHP支持的所有主要数据库引擎,但是作为参考,如果还注意到其他引擎,它将会更好.

我要求的设计最适合阅读.例如,在WHERE条件中使用flag字段进行SELECT,或者使用GROUP BY进行标记.性能比存储空间重要得多(除非大小对性能有影响).

还有一些细节:

在创建表时,我不知道它是否会稀疏(如果大多数标志都打开或关闭),但我可以稍后更改表,所以如果有什么我可以优化,如果我知道,它应该是指出.

此外,如果每行只有一个标志(或几个),那么与许多(或许多)标志相比,它会产生影响.

顺便说一句,我在以下的某处读过以下内容:

使用boolean可能与使用tinyint做同样的事情,但是它具有在语义上传达你的意图的优点,这是值得的.

好吧,在我的情况下它并不值得,因为每个表都由我的应用程序中的类表示,并且所有内容都在类中明确定义并且记录良好.

flags database-design bitflags

6
推荐指数
1
解决办法
2147
查看次数

为什么关系数据库不适合非结构化数据?

我一直在研究NoSQL数据库,并且出现的一个共同主题是关系数据库不适合存储非结构化数据.例如:

不幸的是,关系数据库使用的严格定义的,基于模式的方法......不适合非结构化和半结构化数据 [来源]

我很难理解为什么会这样.例如,如果我想在关系数据库中存储图像或原始文本,我是否可以将其存储为文本类型(例如,在单个列表或键值表中)?

sql database relational-database nosql

6
推荐指数
3
解决办法
7616
查看次数

在数据库中建模抽象基类和子类

我有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; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我朦胧的地方是如何在数据库中建模.目前,我有一个名为表Events(例如起见,假设一个事件是党的生日)和4个表(Videos,Images,Notes,和Forms).每个表都有一个链接回Events"主键"的外键.

使用LINQ-to-SQL,我为每个表获得5个类.例如Event.Images,如果我只想要一种类型的数据,这很好,但我想要做的是计算'内容'的总数Event并得到GPS坐标.我可以通过使用来轻松计算计数Event.Images.Count() + Event.Videos.Count() + ...,但我不能对GPS坐标做同样的事情.有没有什么方法可以建模数据库,以便我可以为每个项目使用基类,并且当我需要查看其数据时仍然能够获得单独的强类型项目?

database-design abstract-class linq-to-sql

5
推荐指数
1
解决办法
3925
查看次数

与数据库架构相关的问题

我有一个关于数据库的理论问题.为了使它更具体,我想到了一个例子.

假设我有一个商店和产品.我有很多不同的产品.并非每种产品都具有相同的适用性.例如,我可以用千兆字节定义硬盘的大小,但不能在CPU上使用相同的属性,因为它不适用.我想要的是一个数据库,我可以动态地向产品添加属性.我唯一能想到的是以下内容:

一个带有ID,名称和描述的产品表.

一个属性表,包含ID,Product_ID,Property和Value.

通过这种方式,我可能会获得一个巨大的,我认为不那么高效的属性表.这已经困扰了我很长一段时间了.有谁知道我的问题更好的解决方案?

database-design relational

4
推荐指数
1
解决办法
2888
查看次数

一个或多个表用于许多不同但相互作用的事件?

我正在创建一个应用程序,其核心功能随时间跟踪各种数据(血糖水平,胰岛素剂量,食物摄入量等),我正在尝试决定如何最好地在数据库中组织这些信息.

最基本的是这个特定伞中的所有内容都是一个事件,因此我想到了一个包含可能出现的所有属性的字段的事件表.然而,这可能是笨拙的,因为绝大多数领域最终将成为许多领域的空白; 但我不确定这是否真的是一个问题.这种方式的好处是可以更容易地调用和显示所有事件.但由于许多事件只有"时间戳"的共同点,我怀疑它们是否属于同一个表.

我不确定为每种事件都有一个表是有意义的,因为单独使用大多数事件只有一个属性而不是时​​间戳,并且它们通常必须混合在一起.(许多类型的数据通常但不总是出现在一个组中)

某些类型的事件有持续时间.有些是比较罕见的.一类事件通常是保持不变的比率,除非费率被改变为良好或临时覆盖(这些是我最担心的).有些是简单的二进制标记(我计划使用链接表,但为了简单起见,我需要/更喜欢整个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 …
Run Code Online (Sandbox Code Playgroud)

sql events database-design

4
推荐指数
1
解决办法
1257
查看次数