当然我意识到没有一种"正确的方法"来设计SQL数据库,但我想在我的特定场景中得到一些关于更好或更差的意见.
目前,我正在设计一个订单输入模块(使用SQL Server 2008的Windows .NET 4.0应用程序),当谈到可以应用于多个位置的数据时,我在两个设计决策之间徘徊.在这个问题中,我将专门提到地址.
地址可以被各种对象(订单,客户,员工,货运等)使用,并且它们几乎总是包含相同的数据(地址1/2/3,城市,州,邮政编码,国家等).我原本打算将每个字段作为列包含在每个相关表中(例如,订单将包含Address1/2/3,City,State等.而Customers也将包含相同的列布局).但我的一部分想要在这种情况下应用DRY/Normalization原则,即有一个名为"Addresses"的表,它通过相应表中的Foreign Key引用.
CREATE TABLE DB.dbo.Addresses
(
Id INT
NOT NULL
IDENTITY(1, 1)
PRIMARY KEY
CHECK (Id > 0),
Address1 VARCHAR(120)
NOT NULL,
Address2 VARCHAR(120),
Address3 VARCHAR(120),
City VARCHAR(100)
NOT NULL,
State CHAR(2)
NOT NULL,
Country CHAR(2)
NOT NULL,
PostalCode VARCHAR(16)
NOT NULL
)
CREATE TABLE DB.dbo.Orders
(
Id INT
NOT NULL
IDENTITY(1000, 1)
PRIMARY KEY
CHECK (Id > 1000),
Address INT
CONSTRAINT fk_Orders_Address
FOREIGN KEY REFERENCES Addresses(Id)
CHECK (Address > 0)
NOT NULL,
-- …Run Code Online (Sandbox Code Playgroud) 我在互联网上搜索了一些有关开发C#抽象语法树的新手信息,但我只能找到已经"知道"的人的信息.我是一个业务线应用程序开发人员,所以这些主题有点过头了,但这是我自己的教育,所以我愿意花时间学习任何必要的概念.
通常,我想了解从代码字符串开发代码的抽象表示背后的技术.更具体地说,我希望能够使用此AST来执行C#语法突出显示.(我意识到语法高亮并不需要AST,但这似乎是学习一些"编译器"级技术的好机会.)
如果这个问题有点宽泛,我很抱歉,但我不知道该怎么回答.
谢谢!
谢谢阅读.
是否可以将复合外键用作表的复合主键的一部分?
例如,假设我有两个表:
CREATE TABLE DB.dbo.Partners
(
CONSTRAINT pk_Partners_Id
PRIMARY KEY (Name, City, State, Country, PostalCode),
Name VARCHAR(100)
NOT NULL,
Address1 VARCHAR(100),
Address2 VARCHAR(100),
Address3 VARCHAR(100),
City VARCHAR(150)
NOT NULL,
State CHAR(2)
NOT NULL,
Country CHAR(2)
NOT NULL,
PostalCode VARCHAR(16)
NOT NULL,
Phone VARCHAR(20),
Fax VARCHAR(20),
Email VARCHAR(256)
)
Run Code Online (Sandbox Code Playgroud)
...然后在第二个表中,我想在第二个表的主键中引用外键:
CREATE TABLE DB.dbo.PartnerContacts
(
CONSTRAINT pk_PartnerContacts_Id
PRIMARY KEY (fk_PartnerContacts_PartnerId, FirstName, LastName, PhoneNumber, Email),
CONSTRAINT fk_PartnerContacts_PartnerId
FOREIGN KEY REFERENCES Partners(Name, City, State, Country, PostalCode),
FirstName VARCHAR(75)
NOT NULL,
MiddleName VARCHAR(75),
LastName …Run Code Online (Sandbox Code Playgroud) 在IIS 7中管理ASP.NET缓存的方式/位置是什么?我知道它存储在服务器的内存中,但管理它的过程是什么?它是在w3wp.exe的地址空间中,还是在另一个进程/位置?会话数据是否使用缓存,或者会话的工作方式不同吗?
我正在尝试使用URL Rewrite模块在IIS 7中设置规范的默认URL.我认为我误解了如何使用"匹配URL"字段.以下似乎没有做任何事情:
<rewrite>
<rules>
<rule name="EnforceDefaultPage">
<match url="^http://(?:www\.)?mydomain\.com(?:/)?(?:blog\.aspx)?$" />
<action type="Redirect" url="http://www.mydomain.com/blog" appendQueryString="false" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
我在很多例子中都注意到人们已经使用HTTP_HOST变量添加了一个条件......但是这与匹配网址有何关系?似乎我应该能够省略任何条件,因为我的正则表达式完全匹配我想要的.