Generowanie Id w bazie danych

0

Witam,

piszę, aby poradzić się Was w sprawie generowania id w bazie danych. Dla przykładu, aby zrozumieć o co mi chodzi:

CREATE TABLE Person(
IdPerson INTEGER PRIMARY KEY,
FirstName CHAR(20) NOT NULL,
LastName CHAR(20) NOT NULL,
...)

IdPerson to klucz główny. Teraz pytanie jaką strategię przyjąć dla generowania jego wartości? Z moich poszukiwać wynika że istnieją 3 sposoby:

  1. Autoincrement na kolumnie
  2. Obliczenie wartości w programie (MAX z pola + 1)
  3. Własna tabela zawierająca nazwę tabeli + następna wartość dla ID

Proszę o podzielenie się wiadomościami z tego zakresu :)
Za wszelkie odpowiedzi z góry wielkie dzięki.

0
CREATE TABLE Person(
IdPerson INTEGER PRIMARY KEY AUTO_INCREMENT,
FirstName CHAR(20) NOT NULL,
LastName CHAR(20) NOT NULL);

INSERT INTO Person(FirstName, LastName) VALUES('Lorem', 'Ipsum');

Taka jest standardowa procedura...


Opolski Portal Programistyczny
http://programowanie.opole.pl

0
Patryk napisał(a)
  1. Autoincrement na kolumnie
    to jest w większości przypadków jedyne słuszne rozwiązanie
  1. Obliczenie wartości w programie (MAX z pola + 1)
    to NIGDY nie jest dobre rozwiązanie i nawet nie powinno być brane pod uwagę
  1. Własna tabela zawierająca nazwę tabeli + następna wartość dla ID
    to jest używane do numerowania np. faktur, gdzie nie powinno być 'dziur' w numeracji. Jednak jest to trochę bardziej skomplikowane bo trzeba zadbać o to aby numeracja się nie powtarzała.
0

Wielkie dzięki Misiekd,
takiej właśnie odpowiedzi oczekiwałem :) Najbardziej interesuje mnie trzecia możliwość i raczej zajmę się zgłębianiem jej.

Dzięki jeszcze raz.

0

drugie rozwiazanie jest dobre i konieczne. Np przy wlasnej replikacji BD.

1 użytkowników online, w tym zalogowanych: 0, gości: 1