NULL permitido na Chave Primária - por que e em que DBMS?

Além da minha pergunta"Por que usar 'não chave primária nula' no TSQL?"...

Como entendi em outras discussões, alguns RDBMS (por exemplo, SQLite,MySQL) permite NULL "único" na chave primária.

Por que isso é permitido e como pode ser útil?

Antecedentes: Eu acredito que é benéfico para a comunicação com colegas e profissionais de banco de dados conhecer as diferenças de conceitos fundamentais, abordagens e suas implementações em diferentes SGBD.

NotasO MySQL é reabilitado e retornado à lista "NOT NULL PK".SQLite foi adicionado (graças a Paul Hadfield) à lista "NULL PK":

Para fins de determinação da exclusividade dos valores da chave primária,Os valores NULL são considerados distintos de todos os outros valores, incluindo outros NULLs.

Se uma instrução INSERT ou UPDATE tentar modificar o conteúdo da tabela para que duas ou mais linhas apresentem valores idênticos de chave primária, será uma violação de restrição. De acordo com o padrão SQL, PRIMARY KEY sempre deve implicar NOT NULL. Infelizmente, devido a uma supervisão de codificação de longa data, esse não é o caso no SQLite.

A menos que a coluna seja uma INTEGER PRIMARY KEYSQLite permite valores NULL em uma coluna PRIMARY KEY. Poderíamos mudar o SQLite para estar em conformidade com o padrão (e poderíamos fazê-lo no futuro), mas quando a supervisão foi descoberta, o SQLite estava em uso tão amplo que temíamos quebrar o código legado se solucionássemos o problema.

Por enquanto, optamos por continuar permitindo NULLs nas colunas PRIMARY KEY. Os desenvolvedores devem estar cientes, no entanto, de que podemos mudar o SQLite para se adaptar ao padrão SQL no futuro e projetar novos programas de acordo.

SQL como compreendido pelo SQLite: CREATE TABLE

questionAnswers(5)

yourAnswerToTheQuestion