Given a schema r(A,B,C,D,E,F) and a set of functional dependencies
R(A,B,C,D,E,F)
•A --> BCD
•BC --> DE
•B --> D
•D --> A
Let's see. F is'nt on any of the FDs side. That means we use the armststrongs axionoms to sett F->F wich is a trivial FD.
You don't need primary keys on this one. What you have to do is to find the candidate key(s), wich is a minimal off a superkey (there might be also several c.keys).
I can almost imediatly see that AF is ("the one of probably many") c.key.
Then minimize the right side such as
A --> B
A--> C
A--> D and so on and so on... Find out wich FD is on BCNF. If not then get down to buisness.
Try splitting them up by using the FDs. Eventually you will find out the true and lossless decomposition if there is. Hint: No rush...
Editing: What I can immediatly comment on your topic is, the relational schema has a standard 1NF(that's just the way it always is). What I mean by that is, when you are looking to check wheter the RS is in other NFs. Does it complete the rules to be in the 3NF, 2NF and so on... If it violates them all! then it must be in 1NF. So your objective is to find wich NF your particular relational schema you are working on.
Noteworthy thing that might come handy is. Write up all the FDs in front of yourself and create a LMR table. Lets say we check A. It appears on both side, therefor it's in the middle. B is also on both sides. So on and so on...
L(eft) | M(iddle) | R(ight)
| ABCD | E
Since F is not in any FDs, it must be in the candidate key.
As you might have noticed. Most of the attributes are in the middle. That means you have to check ALL of them with closure testing for if they are in a candidate key.
After all this bla bla you probably think I talk only about the candidate key, but what makes it BCNF. That is, a non-trivial FD is if and only if X -> A, where X is a superkey. Check if you find X in any of the c.keys you found. If you find a match. Voila! The statement is true and therefor the RS is in BCNF.