sql >> Database >  >> RDS >> Oracle

Hoe implementeer je gapless, gebruiksvriendelijke ID's in NHibernate?

Een optie zou zijn om een ​​sleuteltabel bij te houden die eenvoudig een oplopende waarde opslaat. Dit kan een aantal problemen introduceren, namelijk mogelijke vergrendelingsproblemen en extra hits voor de database.

Een andere optie zou kunnen zijn om te verfijnen wat u bedoelt met "Gebruikersvriendelijke ID". Dit kan bestaan ​​uit een combinatie van een Datum/Tijd en een klantspecifieke volgorde (of ook inclusief het klantnummer). Ook hoeft uw bestel-ID niet per se de daadwerkelijke sleutel op de tafel te zijn. Er is niets om te zeggen dat u geen surrogaatsleutel kunt gebruiken met een aparte "berekende" kolom die de order-ID vertegenwoordigt.

Het komt erop neer dat het klinkt alsof je een surrogaatsleutel wilt gebruiken, maar de voordelen van een natuurlijke sleutel hebt. Het kan erg moeilijk zijn om beide kanten op te hebben en veel komt neer op hoe u de gegevens daadwerkelijk gaat gebruiken, hoe gebruikers de gegevens interpreteren en persoonlijke voorkeur.




  1. Kan MAX_UTILIZATION voor PROCESSES worden bereikt oorzaak Kan beheerde verbindingsuitzondering niet krijgen?

  2. PHP PDO voorbereide verklaringen

  3. Oracle:verschil tussen max(id)+1 en sequence.nextval

  4. Primaire sleutels in SQL Server