我需要知道使用非规范化表与使用两个单独的表并使用连接访问数据的权衡.我正在使用Entity Framework 4.
在我的情况下,我有两个表Order和OrderCategoryDetails.我在想是否将这两个表合并为一个表更好?
OrderCategory并且OrderSubcategory将是稀疏的(可能是100%为空.将始终至少50%为空)Order,我也需要信息OrderCategoryDetails.目前,我已经规范化了表并使用了导航属性:
从OrderItem实例访问订单类别信息
OrderItem orderItem = _context.OrderItems.Where(...).FirstOrDefault();
if(2 == orderItem.SalesOrder.Category.OrderCategory){ ...}
Run Code Online (Sandbox Code Playgroud)从Order实例访问订单类别信息
Order order = _context.Orders.Where(...).FirstOrDefault();
if(2 == order.Category.OrderCategory){ ...}
Run Code Online (Sandbox Code Playgroud)这是我的架构:
表:订单
ID (首要的关键)OrderCategoryInfo(FK - 加入OrderCategoryDetailson OrderCategoryDetails.ID)表:OrderCategoryDetails
ID (首要的关键)表:OrderItem
OrderItem ID (首要的关键)Order)使用的数据库:SQL Server 2008 R2
c# sql-server database-design entity-framework database-normalization
我有以下结构:
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)
架构目前是这样的:
Block
1/ \1
n/ \n
Foo-n---m-Bar
Run Code Online (Sandbox Code Playgroud)
这个问题是可能存在属于不同Block的Foo的Bar
是否存在既没有冗余也没有允许不一致的模式?
在给定的表中,如果没有主键甚至不可能创建复合主键,那么该表的正常形式是什么?
如果它的零(0NF)添加一个新列并使其成为主键会将这个表转换为 1NF ?
database database-design relational-database database-normalization
R = ( A, B, C, D )- 关系模式 R 中没有有效的函数依赖关系
对于上述关系,最高范式是什么?我有一个问题,如果它不在 BCNF 中,我应该识别最高范式并将其分解为 BCNF 。
我需要使用相关的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) 因为我在1 - 2年之间经历了我应该对这个面试问题说什么....
规范化有哪些类型?我应该说所有的正常形式还是什么?
我对某些数据库规范化有些困惑,并认为我会问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) 数据库管理系统中使用的术语"规范化"和"分区"之间是否有任何区别?我尝试谷歌它,但用简单的话语找不到合适的答案.水平和垂直分区有什么区别?
我有这两张桌子。
如果我确定它们位于 3NF 中,这是正确的方法吗?我的答案:
StaffDetails( StaffID , SName, DOB, DivisionNo*)
Division( DivisionNo , DivName, DivSupervisorID)
StaffProject( StaffId *, ProjectNo *, SName, ProjectName, HoursAssigned)
项目(项目编号, 项目名称)
主键是粗体的,但是星号后面的原因是什么?
database database-design third-normal-form database-normalization
我有两个表,“警察和违规”(警察拥有警察的数据,而“违规”则包含所有违规停车的数据),其基本思想是警察可以取消任何数量的违规行为,但只有一个违规行为可以被一次取消因此,从本质上讲,它可以看作是(警察PK(用户名))1:M(违规PK(违规#))现在,违规表会将警察的用户名作为外键。现在,如果其中一位警察取消了特定的违规行为,那么还将添加该警察的用户名(取消日期和时间),而不是此名称,在违规表中它将具有空值。
问题是,当在数据库中插入一个违反项时,违反表中属于该策略的字段为NULL,而我希望避免使用此NULL值。[我的意思是,(用户名,日期,时间)只有在警察取消违规行为时才有价值,这意味着将违规状态更新为要取消。]
database null database-design relational-database database-normalization