On Fri, Mar 2, 2018 at 11:58 AM, Alexander Farber < alexander.far...@gmail.com> wrote:
> I see, thank you for your comments, David and Adrian. > > In the "tiles" column actually save either the JSON array of tiles - when > the user plays them > > Or a string (which is jsonb too) concatenated of letters - when the user > swaps the letters. > > Maybe I should rethink my table structure (I just want to "log" all plays, > swaps, skips, resigns in the words_moves table)... > > Or maybe I should always check for the "action" column first (acts as > enum) - before accessing "tiles" column.... > > A table constraint like: CASE WHEN action = 'Play' THEN lengh < 0 WHEN action = 'Swap' THEN ... ELSE false END Is perfectly fine - though having actual non-null values take on different meanings based upon the enum is generally not a good idea. I've been using the above to enforce conditional not null constraints when I don't want to implement explicit inheritance. David J.