Ich habe eine interessante Design-Frage. Ich entwerfe die Sicherheitsseite unseres Projekts, um verschiedene Versionen des Programms für unterschiedliche Kosten zu ermöglichen und um auch Managern zu erlauben, anderen Benutzern den Zugriff auf Teile des Programms zu gewähren oder zu verweigern. Es wird webbasiert und auf unseren Servern gehostet.Ist es besser, eine SQL-Tabelle zu strukturieren, um eine Übereinstimmung zu haben, oder kein Ergebnis zurückgeben
Ich verwende eine einfache Zulassen oder Verweigern Option für jede 'Ressource' oder Bildschirm.
Wir werden eine große Anzahl von Ressourcen haben, und der Benutzer wird in der Lage sein, viele verschiedene Gruppen einzurichten, um Benutzer zur Kontrolle des Zugriffs zu bewegen. Jeder Benutzer kann nur zu einer einzigen Gruppe gehören.
Ich habe zwei Ansätze in diesem Sinne, und war neugierig, was für den SQL-Server in Bezug auf die Leistung besser wäre.
Option A Das Vorhandensein eines Eintrags in der Zugriffstabelle bedeutet, dass der Zugriff zulässig ist. Dies benötigt keine Spalte in der Datenbank, um Informationen zu speichern. Wenn keine Ergebnisse zurückgegeben werden, wird der Zugriff verweigert.
Ich denke, dies wird eine kleinere Tabelle bedeuten, aber würde Abfragen die gesamte Tabelle durchsuchen, um festzustellen, gibt es keine Übereinstimmung?
Option B Eine Bitspalte ist in der Datenbank enthalten, die Zulassen/Verweigern steuert. Dies bedeutet, dass immer ein Ergebnis gefunden wird und eine größere Tabelle erstellt wird.
Gedanken?
Die Benutzertabelle wird von der Zugriffssteuerungstabelle getrennt, sodass das Hinzufügen oder Entfernen von Zugriff keine Auswirkungen auf die Existenz des Benutzers hat. Der Standard ist auch, wenn kein Ergebnis gefunden wird, um den Zugriff zu verweigern, so dass es nicht möglich sein sollte, versehentlich Zugriff zu erhalten. – Tilendor