Bir iş görüşmesinde, eş anlamlılarını izleyen bir sözlük için veritabanını tasarladım. Eşanlamlı kısım röportajda daha sonraki bir sorundu. IBir SQL veritabanında eş anlamlılar tasarlamanın en iyi yolu?
Words
=============
id | ...
=============
1 | .
2 | .
. | .
. | .
gibi bir tablo ve bu yüzden bir tablo Örneğin
Synonyms
======================
wordA_id | wordB_id
======================
. | .
. | .
. | .
ifadesi ile id
eşit 1
, 69
ve 72
eş sonra
1 | 69
69 | 72
, Synonyms
numaralı girişte olabilir. Ancak, farkettim ki,
Anladım. Ve eşleştirme sırası önemli değil, bu yüzden
sadece kelimeler. Ve muhtemelen
69 | 1
1 | 72
69 | 1
69 | 1
1 | 72
1 | 69
ait tüm Bunu sağlamak için veritabanını yapılandırmak için en iyi yolu merak ediyorum gibi yinelenen herhangi bir sırayla kayıtlarını, bu nedenle bir şey istemiyoruz. Ne (röportajında) önerdi benim T-SQL sözdiziminde herhangi bir hata
CREATE PROCEDURE InsertSynonym
@idA INT,
@idB INT
AS
-- make @idA the smaller if it isn't already
IF @idA > @idB
BEGIN
@DECLARE @temp INT
SET @temp = @idA
@idA = @idB
@idB = @temp
END
-- insert if not already there
IF NOT EXISTS (SELECT * FROM Synonyms WHERE [email protected])
BEGIN
INSERT INTO Synonyms (wordA_id,wordB_id) VALUES (@idA,@idB)
END
- gibi, tüm bu kontrol eden bir sproc aracılığıyla synynoms var mıdır takmadan mı?
- Tek yol eşanlamlılarının eklendiğini varsayarsak, bu yordam mantığa göre tüm vakaları kapsar ve
Synonyms
tablonun boyutunu patlatmaktan korur mu? - Bu eşanlamlı deseni tasarlamak için daha iyi bir yol var mı?
- Bu arada, T-SQL'de bir XOR takası yapmak mümkün mü?
W Hala röportaj yapıyorsanız işaret etmek için karınca, muhtemelen eşanlamlı tablo şemasına bir çeşit sayısal "rank" sütunu eklemek isteyebilirsiniz; Bir eşanlamlıya baktığınız zaman düşünün, belirli bir sözcüğün eşanlamlıları genellikle anlamlarının sizin sözünüze ne kadar benzediğine göre sıralanır. Bu aynı zamanda çift yönlü harita optimizasyonunuzu da çalışmaz hale getirir, gereksiz bir optimizasyon söz konusudur. –