标签: database-normalization

对表进行反规范化或使用实体框架中的连接

我需要知道使用非规范化表与使用两个单独的表并使用连接访问数据的权衡.我正在使用Entity Framework 4.

在我的情况下,我有两个表OrderOrderCategoryDetails.我在想是否将这两个表合并为一个表更好?

  • 如果非规范化,则添加的列(OrderCategory并且OrderSubcategory将是稀疏的(可能是100%为空.将始终至少50%为空)
  • 另一方面,如果我保持原样,我担心频繁的连接操作被执行(即每当我查询特定的时候Order,我也需要信息OrderCategoryDetails.

目前,我已经规范化了表并使用了导航属性:

这是我的架构:

表:订单

  • ID (首要的关键)
  • 日期
  • ItemCount中
  • OrderCategoryInfo(FK - 加入OrderCategoryDetailson OrderCategoryDetails.ID)

表:OrderCategoryDe​​tails

  • ID (首要的关键)
  • OrderCategory
  • OrderSubCategory

表:OrderItem

  • OrderItem ID (首要的关键)
  • 订单ID(FK - 加入Order)

使用的数据库:SQL Server 2008 R2

c# sql-server database-design entity-framework database-normalization

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

几乎树的数据库模式

我有以下结构:

Block A
  Foo 1
    Bar 1
    Bar 2
  Foo 2
    Bar 1
    Bar 3
  Bar 4

Block B
  Foo 3
Run Code Online (Sandbox Code Playgroud)
  • 每个Foo都属于Block.
  • 每个Bar都属于Block.
  • 一个Bar可以属于同一个Block中的一个或多个Foo .

架构目前是这样的:

    Block
   1/   \1
  n/     \n
Foo-n---m-Bar
Run Code Online (Sandbox Code Playgroud)

这个问题是可能存在属于不同Block的Foo的Bar

是否存在既没有冗余也没有允许不一致的模式?

database-design data-modeling database-normalization

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

规范化和主键

在给定的表中,如果没有主键甚至不可能创建复合主键,那么该表的正常形式是什么?

如果它的零(0NF)添加一个新列并使其成为主键会将这个表转换为 1NF ?

database database-design relational-database database-normalization

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

没有功能依赖性的关系模式规范化

R = ( A, B, C, D )- 关系模式 R 中没有有效的函数依赖关系

对于上述关系,最高范式是什么?我有一个问题,如果它不在 BCNF 中,我应该识别最高范式并将其分解为 BCNF 。

database database-normalization functional-dependencies

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

规范化数据

我需要使用相关的employeeid更新managerid字段.

CREATE TABLE Employee(
EmployeeID Int Primary Key Identity,
Name Varchar(50),
ManagerID INT default 0,
ManagerName Varchar(50) default ''
)
INSERT INTO Employee(Name,ManagerName) VALUES('Dilbert','Boss')
INSERT INTO Employee(Name,ManagerName) VALUES('Boss','Dogbert')
INSERT INTO Employee(Name) VALUES('Dogbert')
SELECT * FROM Employee
GO
-- This is the update stmt I need help with
UPDATE Employee 
SET ManagerID=EmpID
WHERE ManagerName = Name
Run Code Online (Sandbox Code Playgroud)

sql sql-server database-normalization

0
推荐指数
1
解决办法
114
查看次数

如何回答这个面试问题?

因为我在1 - 2年之间经历了我应该对这个面试问题说什么....

规范化有哪些类型?我应该说所有的正常形式还是什么?

database-normalization

0
推荐指数
1
解决办法
4227
查看次数

在进行数据库规范化时,将重复的行信息集组合成新的实体是什么?

我对某些数据库规范化有些困惑,并认为我会问StackOverflow:

想象一下,您具有以下将产品与颜色相关联的关系。请注意,产品1和产品2都使用相同的颜色集(蓝色和绿色)。

Product_Color                         Color
+-------------+-------------+     +-------------+-------------+
| Product*    | Color*      |     | ColorId*    | Name        |
+-------------+-------------+     +-------------+-------------+
| 1           | 1           |     | 1           | Blue        |
| 1           | 2           |     | 2           | Green       |
| 2           | 1           |     +-------------+-------------+
| 2           | 2           |
+-------------+-------------+
Run Code Online (Sandbox Code Playgroud)

如果创建两个新的关系ColorSet和ColorSet_Color,则可以通过将这4个关系连接在一起来显示相同​​的信息。

Product_ColorSet:                 ColorSet_Color:             
+-------------+-------------+     +-------------+-------------+
| Product*    | ColorSetId* |     | ColorSetId* | ColorId*    |
+---------------------------+     +-------------+-------------+
| 1           | 1           |     | 1           | 1           |
| 2           | …
Run Code Online (Sandbox Code Playgroud)

database-design database-normalization

0
推荐指数
1
解决办法
127
查看次数

DBMS中规范化和分区的区别

数据库管理系统中使用的术语"规范化"和"分区"之间是否有任何区别?我尝试谷歌它,但用简单的话语找不到合适的答案.水平和垂直分区有什么区别?

database oracle rdbms database-normalization

0
推荐指数
1
解决办法
584
查看次数

第三范式 (3NF)

我有这两张桌子。

桌子

如果我确定它们位于 3NF 中,这是正确的方法吗?我的答案:

StaffDetails( StaffID , SName, DOB, DivisionNo*)
Division( DivisionNo , DivName, DivSupervisorID)
StaffProject( StaffId *, ProjectNo *, SName, ProjectName, HoursAssigned)
项目(项目编号, 项目名称)

主键是粗体的,但是星号后面的原因是什么?

database database-design third-normal-form database-normalization

0
推荐指数
1
解决办法
1489
查看次数

规范化数据库中表的空值

我有两个表,“警察和违规”(警察拥有警察的数据,而“违规”则包含所有违规停车的数据),其基本思想是警察可以取消任何数量的违规行为,但只有一个违规行为可以被一次取消因此,从本质上讲,它可以看作是(警察PK(用户名))1:M(违规PK(违规#))现在,违规表会将警察的用户名作为外键。现在,如果其中一位警察取消了特定的违规行为,那么还将添加该警察的用户名(取消日期和时间),而不是此名称,在违规表中它将具有空值。

问题是,当在数据库中插入一个违反项时,违反表中属于该策略的字段为NULL,而我希望避免使用此NULL值。[我的意思是,(用户名,日期,时间)只有在警察取消违规行为时才有价值,这意味着将违规状态更新为要取消。]

database null database-design relational-database database-normalization

-1
推荐指数
1
解决办法
235
查看次数

数据库管理系统规范化

我如何使这种关系正常化?

Emp_project(SSN,PNum,Hours,Ename,PName,Plocs)
Run Code Online (Sandbox Code Playgroud)

database rdbms database-normalization

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