ich zur Zeit versucht, das Design einer Legacy-DB zu verbessern, und ich habe die folgende SituationDatenbank-Design-Lookup-Tabellen
Zur Zeit habe ich eine Tabelle SalesLead in dem wir die die LeadSource speichern.
Create Table SalesLead(
....
LeadSource varchar(20)
....
)
Die Lead Sources werden hilfreich in einer Tabelle gespeichert.
Create Table LeadSource (
LeadSourceId int, /*the PK*/
LeadSource varchar(20)
)
Und so möchte ich nur von einem Fremdschlüssel erstellen, um den anderen und die nicht-normalisierte Spalte fallen.
Alle üblichen Sachen, hoffe ich.
Hier ist mein Problem. Ich kann nicht von dem Problem zu erhalten scheinen weg, dass anstelle des Schreibens
SELECT * FROM SalesLead Where LeadSource = 'foo'
, die völlig eindeutig ist ich jetzt
SELECT * FROM SalesLead where FK_LeadSourceID = 1
oder
SELECT * FROM SalesLead
INNER JOIN LeadSource ON SalesLead.FK_LeadSourceID = LeadSource.LeadSourceId
where LeadSource.LeadSource = "foo"
Was, wenn wir bricht schreiben Ändern Sie den Inhalt des LeadSource-Felds.
In meiner Anwendung, wann immer ich den Wert SalesLead des LeadSource verändern wollen Ich möchte von 1 bis 2 nicht aktualisieren (zum Beispiel), wie ich will nicht Entwickler haben mit diesen magischen Zahlen erinnern . Die IDs sind willkürlich und sollten so gehalten werden.
Wie entferne oder negiere ich die Abhängigkeit von ihnen im Code meiner App?
bearbeiten Sprachen meine Lösung unterstützen müssen
- .NET 2.0 + 3 (für das, was ihren Wert asp.net, vb.net und C#)
- vba (Zugang)
- db (MSSQL 2000)
Edit 2.0 Die feine Join ist nur tha t 'foo' kann sich auf Anfrage zu 'foobar' ändern und ich möchte die Abfragen nicht durchziehen.
das Problem ist, dass, wenn wenn foo zu foobar geändert wird dann müssen alle meine Abfragen aktualisiert werden –