Różnica między kluczem podstawowym a unikalnym indeksem w SQL Server [duplikat]

To pytanie ma już odpowiedź tutaj:

Jaka jest różnica między kluczem podstawowym a unikalnym ograniczeniem klucza? 5 odpowiedzi

Moja firma jest obecnie w trakcie przepisywania aplikacji, którą niedawno nabyliśmy. Zdecydowaliśmy się użyć ASP.net mvc4 do zbudowania tego systemu, a także użyć Entity Framework jako naszej ORM. Poprzedni właściciel firmy, którą przejęliśmy, jest bardzo nieugięty, że używamy ich starej bazy danych i niczego nie zmieniamy, aby klienci mogli korzystać z naszego produktu jednocześnie ze starym systemem podczas opracowywania różnych modułów.

Dowiedziałem się, że stare struktury tabel nie mają klucza podstawowego, a zamiast tego używa unikalnego indeksu jako klucza podstawowego. Teraz, używając frameworku Entity, próbowałem dopasować tabele w strukturze, ale nie byłem w stanie tego zrobić, ponieważ EF generuje klucz podstawowy zamiast unikalnego indeks

Kiedy skontaktowałem się z poprzednim właścicielem i wyjaśniłem to, powiedział mi, że „kluczem unikatowym w każdej tabeli jest klucz podstawowy. Są one dla siebie synonimami”.

Wciąż jestem stosunkowo nowy w systemach baz danych, więc nie jestem pewien, czy jest to poprawne. Czy ktoś może to wyjaśnić?

Tabela po zrzuceniu do SQL generuje:

-- ----------------------------
-- Indexes structure for table AT_APSRANCD
-- ----------------------------
CREATE UNIQUE INDEX [ac_key] ON [dbo].[AT_APSRANCD]
([AC_Analysis_category] ASC, [AC_ANALYSI_CODE] ASC) 
WITH (IGNORE_DUP_KEY = ON)
GO

jednak mój system generuje:

-- ----------------------------
-- Primary Key structure for table AT_APSRANCD
-- ----------------------------
ALTER TABLE [dbo].[AT_APSRANCD] ADD PRIMARY KEY ([AC_Analysis_category])
GO

EDYTOWAĆ Dalsze pytanie brzmi: w jaki sposób bym przystąpił do projektowania modeli w tym celu? Jestem przyzwyczajony do używania adnotacji [Klucz], która definiuje go jako klucz podstawowy, a bez niego EF nie wygeneruje tej tabeli. więc coś takiego:

[Table("AT_APSRANCD")]
public class Analysis
{
    [Key]
    public string AnalysisCode { get; set; }
    public string AnalysisCategory { get; set; }
    public string ShortName { get; set; }
    public string LongName { get; set; }
}

questionAnswers(6)

yourAnswerToTheQuestion