我正在创建一个SQL设置脚本,我正在使用别人的脚本作为示例。下面是一个脚本示例:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
    [CategoryID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT [DF_be_Categories_CategoryID]  DEFAULT (newid()),
    [CategoryName] [nvarchar](50) NULL,
    [Description] [nvarchar](200) NULL,
    [ParentID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED 
(
    [CategoryID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

有人知道ON [PRIMARY]命令是做什么的吗?

我正在考虑如何在SQL Server数据库中表示一个复杂的结构。

考虑这样一个应用程序,它需要存储一系列对象的详细信息,这些对象共享一些属性,但有许多其他不常见的属性。例如,一个商业保险包可能在同一份保单记录中包括责任、汽车、财产和赔偿。

在c#等语言中实现这一点很简单,因为您可以创建一个带有Sections集合的Policy,其中Section根据需要继承各种类型的封面。然而,关系数据库似乎不容易做到这一点。

我可以看到有两个主要的选择:

创建一个Policy表,然后创建一个Sections表,其中包含所有可能的变量所需的所有字段,其中大多数字段将为空。 创建一个Policy表和许多Section表,每个表对应一种封面。

这两种选择似乎都不能令人满意,特别是需要跨所有section编写查询,这将涉及大量连接或大量空检查。

这个场景的最佳实践是什么?

我听说过一些实现标签的方法;使用TagID和ItemID之间的映射表(对我来说有意义,但它是否缩放?),向ItemID添加固定数量的可能的TagID列(似乎是个坏主意),在文本列中保留逗号分隔的标签(听起来很疯狂,但可以工作)。我甚至听说有人建议使用稀疏矩阵,但是标签名如何优雅地增长呢?

我是否错过了标签的最佳实践?

我可以阅读MySQL文档,它非常清楚。但是,如何决定使用哪个字符集呢?排序对哪些数据有影响?

我要你解释一下这两种,以及如何选择。

我有一个这样布局的表格:

CREATE TABLE Favorites (
  FavoriteId uuid NOT NULL PRIMARY KEY,
  UserId uuid NOT NULL,
  RecipeId uuid NOT NULL,
  MenuId uuid
);

我想创建一个类似这样的唯一约束:

ALTER TABLE Favorites
ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE(UserId, MenuId, RecipeId);

但是,如果MenuId为NULL,这将允许具有相同(UserId, RecipeId)的多行。我想在MenuId中允许NULL来存储没有关联菜单的收藏夹,但每个用户/食谱对最多只需要其中一行。

到目前为止我的想法是:

Use some hard-coded UUID (such as all zeros) instead of null. However, MenuId has a FK constraint on each user's menus, so I'd then have to create a special "null" menu for every user which is a hassle. Check for existence of a null entry using a trigger instead. I think this is a hassle and I like avoiding triggers wherever possible. Plus, I don't trust them to guarantee my data is never in a bad state. Just forget about it and check for the previous existence of a null entry in the middle-ware or in a insert function, and don't have this constraint.

我使用的是Postgres 9.0。有没有什么方法我忽略了?

我厌倦了在每个项目开始时打开Dia并创建数据库图。是否有一种工具可以让我选择特定的表,然后根据MySQL数据库为我创建数据库图?最好是允许我在之后编辑图表,因为没有设置外键…

以下是我所描绘的图表(请原谅糟糕的数据设计,这不是我设计的。在这个例子中,让我们关注图表的概念,而不是它所代表的实际数据;)):

参见全尺寸图

它们到底是什么意思?我找到的所有关于他们的文章都没有给我一个想法,或者我的知识不够多,无法理解。

有人能给我一些资源,让我从头开始学习吗?

我正在构建一个自定义事件系统,如果你有一个重复的事件,看起来像这样:

事件A从2011年3月3日开始每4天重复一次

or

赛事B从2011年3月1日开始,每两周在周二举行一次

我如何将其存储在数据库中,使其易于查找。如果有大量的事件,我不希望出现性能问题,而且在呈现日历时,我必须遍历每一个事件。

小数点前和小数点后,经度和纬度可以有多少位数字?

这是一个例子,我从一个Windows Phone设备发送的位置:

Latitude=-63572375290155
Longitude=106744840359415

这非常长,超过了我的表列大小,并导致错误。

我正在创建一个数据库表,我没有给它分配一个逻辑主键。每个表都应该有一个主键吗?